package com.bd.scm.dao.mapper.door;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bd.scm.domain.dto.rule.RuleDto;
import com.bd.scm.domain.models.rule.MjRuleReal;
import com.bd.scm.domain.models.rule.RuleTime;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface TimePeriodRulesMapper {
    /**
     * 获取规则名称.
     *
     * @param RuleInfoPage，ruleDto 条件
     * @return 规则名称集合
     */
    public IPage<MjRuleReal> getRuleList(Page<MjRuleReal> RuleInfoPage, RuleDto ruleDto);
    /**
     * 获取规则时段.
     *
     * @param ruleTimePage,ruleDto 条件
     * @return 规则时段集合
     */
    public IPage<RuleTime> getRuleTime(Page<RuleTime> ruleTimePage, RuleDto ruleDto);

    /**
     * 获取修改前的规则名称
     * @param ruleDto
     * @return
     */
    String getBeforeRuleName( RuleDto ruleDto);
    /**
     * 判断新增得规则名称是否存在
     * @param ruleDto
     * @return
     */
    int getIsExist(RuleDto ruleDto);

    /**
     * 获取最大得规则名称编号
     * @return
     */
    int getMaxRuleNo();

    /**
     * 新增规则名称
     * @param ruleDto
     * @return
     */
    int addRuleList(RuleDto ruleDto);
    /**
     * 新增规则名称添加日志记录
     */
    void addLogByRuleName(RuleDto ruleDto);

    /**
     * 修改规则名称
     * @param ruleDto
     * @return
     */
    int updateRuleList(RuleDto ruleDto);


    /**
     * 修改规则名称添加日志记录
     */
    void AddupdateLogByRuleName(RuleDto ruleDto);

    /**
     * 判断该规则里是否存在时段
     * @param ruleDto
     * @return
     */
    int isExisitRuleTime(RuleDto ruleDto);

    /**
     * 判断mj_user_rule_real表是否存在
     * @param ruleDto
     * @return
     */
    int isExisitXh(RuleDto ruleDto);

    /**
     * 删除规则名称
     * @param ruleDto
     * @return
     */
    int deleteRuleName(RuleDto ruleDto);
    /**
     * 删除规则名称添加日志记录
     */
    void AddDeleteLogByRuleName(RuleDto ruleDto);

    /**
     * 获取最大编号
     */
     int getMaxBH();
    /**
     * 在mj_shid_real表中添加数据
     */
    int addMjShidReal(RuleDto ruleDto);
    /**
     * 在mj_sd_rule_real表中添加数据
     */
    int addMjSdRuleReal(RuleDto ruleDto);

    /**
     * 更新时段总数
     * @param ruleDto
     * @return
     */
    int updateRuleCount(RuleDto ruleDto);
    /**
     * 在WT_mj_ver表中添加数据
     */
    int addWTMjVerByAdd(RuleDto ruleDto);
    /**
     * 在WT_mj_ver表中添加数据
     */
    int addWTMjVerByAdd2(RuleDto ruleDto);

    /**
     * 添加时段时添加日志
     * @param ruleDto
     * @return
     */
    int AddInsertLogByRuleTime(RuleDto ruleDto);

    /**
     * 更新时段
     * @param ruleDto
     * @return
     */
    int updateRuleTime(RuleDto ruleDto);
    void updateRuleReal(RuleDto ruleDto);


    /**
     * 修改时段时添加日志
     * @param ruleDto
     */
    void AddupdateLogByRuleTime(RuleDto ruleDto);

    /**
     * 修改完在WT_mj_ver表中添加数据
     */
    int addWTMjVerByUpdate(RuleDto ruleDto);
    /**
     * 修改完在WT_mj_ver表中添加数据
     */
    int addWTMjVerByUpdate2(RuleDto ruleDto);


    /**
     * 根据序号查询规则和时段号
     */
    RuleDto getRuleNoAndSdNo(RuleDto ruleDto);
    /**
     * 根据序号查询规则名称和时段名称
     */
    RuleDto getRuleNameAndSdName(RuleDto ruleDto);
    /**
     * 删除时段
     * @param ruleDto
     * @return
     */
    int deleteRuleTime(RuleDto ruleDto);
    int deleteRuleReal(RuleDto ruleDto);

    /**
     * 删除时段后修改该规则下的时段总数
     * @param ruleDto
     */
    void updateMjRuleRealByDelete(RuleDto ruleDto);
    /**
     * 删除完在WT_mj_ver表中添加数据
     */
    int addWTMjVerByDelete(RuleDto ruleDto);
    /**
     * 删除完在WT_mj_ver表中添加数据
     */
    int addWTMjVerByDelete2(RuleDto ruleDto);

    /**
     * 删除完添加日志记录
     * @param ruleDto
     * @return
     */
    int AddDeleteLogByRuleTime(RuleDto ruleDto);

}
